package org.dei.perla.utils.messages;

import org.dei.perla.sys.device.channel.frame.address.FrameAddress;

/**
 * Questa classe rappresenta un messaggio scambiato tra i componenti Adapter e Channel
 * 
 * Per quanto riguarda i pacchetti AddressFul:
 * i)  Nel caso sia un pacchetto inviato dall'Adapter il campo address contiene 
 *     l'indirizzo di destinazione del pacchetto
 * ii) Nel caso sia un pacchetto inviato dal Channel il campo address contiene 
 *     l'indirizzo sorgente del pacchetto
 * 
 */
public class AdapterChannelMessage extends Message{

	/**
	 * Costruttore, inizializza un messaggio contenente un indirizzo e il payload.
	 * @param parAddress Indirizzo da inviare
	 * @param parPayload Payload da inviare
	 */
	public AdapterChannelMessage(FrameAddress parAddress, byte[] parPayload) {
		super(parAddress, parPayload);
	}

	/**
	 * Restituisce l'oggetto trasformato in una stringa testuale comprensibile
	 */
	public String toString() {

		String s = "AdapterChannelPacket( ";
		if (pAddress != null) {
			s += pAddress.toString();
		} else {
			s += "addr: null";
		}

		s += ", ";

		if (pPayload != null) {
			s += "payload : { ";
			for (int i = 0; i < pPayload.length; i++) {
				s += (int) pPayload[i];
				if (i != pPayload.length - 1) {
					s += ", ";
				}
			}
			s += " } ";
		} else {
			s += "{ null }";
		}

		s += " )\n";
		return s;
	}

}
